package com.zenithmind.gateway.logging;

import org.springframework.http.server.reactive.ServerHttpRequest;

/**
 * 请求信息提取器接口
 * 遵循接口隔离原则：专门负责从请求中提取日志所需的信息
 * 遵循单一职责原则：只负责请求信息的提取逻辑
 */
public interface RequestInfoExtractor {
    
    /**
     * 从请求中提取用户ID
     * @param request HTTP请求
     * @return 用户ID，如果无法提取则返回null
     */
    String extractUserId(ServerHttpRequest request);
    
    /**
     * 从请求中提取用户名
     * @param request HTTP请求
     * @return 用户名，如果无法提取则返回null
     */
    String extractUsername(ServerHttpRequest request);
    
    /**
     * 从请求中提取客户端IP地址
     * @param request HTTP请求
     * @return 客户端IP地址
     */
    String extractRemoteAddress(ServerHttpRequest request);
}
